package initialize

//
//import (
//	"fmt"
//	"github.com/go-mysql-org/go-mysql/canal"
//	"github.com/go-mysql-org/go-mysql/mysql"
//	"github.com/go-mysql-org/go-mysql/replication"
//	"interview/pkg/global"
//	"interview/pkg/redis"
//)
//
//// MysqlBinlog 监听MySQL Binlog
//func MysqlBinlog(tables []string) {
//	if !global.Conf.System.EnableRedis {
//		global.Logger.Debug("未使用Redis，无需初始化MySQL binlog监听器")
//		return
//	}
//	cfg := canal.NewDefaultConfig()
//	cfg.Addr = fmt.Sprintf("%s:%d", global.Conf.Mysql.Host, global.Conf.Mysql.Port)
//	cfg.User = global.Conf.Mysql.Username
//	cfg.Password = global.Conf.Mysql.Password
//	// 数据库类型为mysql/mariadb
//	cfg.Flavor = "mysql"
//	// 集群中唯一编号，若单机则随意设定
//	cfg.ServerID = 1
//	// dump程序名
//	cfg.Dump.ExecutionPath = "mysqldump"
//	// 目标数据库
//	cfg.Dump.TableDB = global.Conf.Mysql.Database
//	// 目标表名
//	cfg.Dump.Tables = tables
//
//	// 创建canal实例
//	c, _ := canal.NewCanal(cfg)
//	// 事件处理器
//	c.SetEventHandler(&BinlogEventHandler{})
//	// 后台运行，从指定位置开始加载
//	go c.RunFrom(redis.GetCurrentPos())
//	global.Logger.Debug("MySQL Binlog监听器初始化完成")
//}
//
//// BinlogEventHandler 自定义事件处理器
//type BinlogEventHandler struct {
//	canal.DummyEventHandler
//}
//
//// OnRow 数据行发生变化
//func (h *BinlogEventHandler) OnRow(e *canal.RowsEvent) error {
//	//global.Logger.Debugf("行变化： %s %v", e.Action, e.Rows)
//	// 同步数据到redis
//	redis.RowChange(e)
//	return nil
//}
//
//// OnPosSynced 日志位置发生变化
//func (h *BinlogEventHandler) OnPosSynced(header *replication.EventHeader, pos mysql.Position, set mysql.GTIDSet, force bool) error {
//	//global.Logger.Debugf("日志位置变化： %s %v %t", pos, set, force)
//	redis.PosChange(pos)
//	return nil
//}
//
//// 处理器名称
//func (h *BinlogEventHandler) String() string {
//	return "BinlogEventHandler"
//}
